package model

// 系统类型
type UserDeviceIDRule string

const (
	UserDeviceIDRuleDevice         UserDeviceIDRule = "119"
	UserDeviceIDRuleDeviceSystem   UserDeviceIDRule = "120"
	UserDeviceIDRuleDeviceTollgate UserDeviceIDRule = "121"
	UserDeviceIDRuleIAS            UserDeviceIDRule = "502"
	UserDeviceIDRuleVIID           UserDeviceIDRule = "503"
	UserDeviceIDRuleAppPlat        UserDeviceIDRule = "504"
)

// 视频图像数据来源
type DataSourceType string

// 音频编码格式
type AudioCodeFormatType string

// 视频编码格式
type VideoCodeFormatType string

// 颜色
type ColorType string

// 密级代码
type SecretLevelType string

// 质量等级
type QualityGradeType string

// 垂直拍摄方向
type VerticalShotType string

// 发型
type HairStyleType string

// 姿态
type PostureType string

// 人的状态
type PersonStatusType string

// 习惯动作
type HabitualActionType string

// 行为
type BehaviorType string

// 附属物
type AppendageType string

// 帽子款式
type HatStyleType string

// 眼镜款式
type GlassesStyleType string

// 包款式
type BagStyleType string

// 上衣款式
type CoatStyleType string

// 上衣长度
type CoatLengthType string

// 裤子款式
type PantsStyleType string

// 裤子长度
type PantsLengthType string

// 鞋子款式
type ShoesStyleType string

// 二值逻辑
type Boolean string

const (
	BooleanTrue  Boolean = "0"
	BooleanFalse Boolean = "1"
)

// 贴膜颜色
type AutoFoilColorType string

// 撞痕信息
type DentInfoType string

// 车前部物品类型
type FrontThingType string

const (
	FrontThingTypeJianCeBiaoZhi    FrontThingType = "1"
	FrontThingTypeXiangShui        FrontThingType = "2"
	FrontThingTypeGuaShi           FrontThingType = "3"
	FrontThingTypeZheYangban       FrontThingType = "4"
	FrontThingTypeYeJianZheYangban FrontThingType = "5"
	FrontThingTypeQiTa             FrontThingType = "99"
	FrontThingTypeKong             FrontThingType = ""
)

// 车后部物品类型
type RearThingType string

// 物品性质
type ThingPropertyType int

// 现场图示
type IllustrationType string

// 现场光线
type IlluminationType string

// 现场条件
type FieldConditionType string

// 现场湿度
type HumidityType string

// 密集程度
type DenseDegreeType string

// 受伤害程度
type InjuredDegreeType string

// 颜色深浅
type VehicleColorDepthType string

// 道路地形分类
type RoadTerraintype string

// 在押人员身份
type DetaineesIdentityType string

// 证件类型
type IDType string

const (
	IDTypeIdNo           = "111"
	IDTypeOfficer        = "114"
	IDTypePoliceOfficer  = "123"
	IDTypePolicePassport = "414"
)

// 性别
type GenderType string

// 号牌种类
type PlateClassType string

// 护照证件种类
type EnPassportType string

// 视频格式
type VideoFormatType string

// 图片格式
type ImageFormatType string

// 车辆品牌代码
type VehicleBrandType string

// 布控范围
type DispositionRangeType string

const (
	DispositionRangeTypeTollgate DispositionRangeType = "1" // 卡口
	DispositionRangeTypeRange    DispositionRangeType = "2" // 区域
	DispositionRangeTypeDevice   DispositionRangeType = "3" // 区域
)

// 视频图像信息类型;0:自动采集;1:人工采集
type InfoType int

const (
	InfoTypeOther      InfoType = 0
	InfoTypeAuto       InfoType = 1
	InfoTypeArtificial InfoType = 2
)

// 确认状态
type ConfirmStatusType string

const (
	OK                 ConfirmStatusType = "0" // 正常
	OtherError         ConfirmStatusType = "1" // 其他未知错误
	DeviceBusy         ConfirmStatusType = "2" // 设备忙
	DeviceError        ConfirmStatusType = "3" // 设备错
	InvalidOperation   ConfirmStatusType = "4" // 无效操作
	InvalidXMLFormat   ConfirmStatusType = "5" // XML格式无效
	InvalidXMLContent  ConfirmStatusType = "6" // XML内容无效
	InvalidJSONFormat  ConfirmStatusType = "7" // JSON格式无效
	InvalidJSONContent ConfirmStatusType = "8" // JSON内容无效
	Reboot             ConfirmStatusType = "9" // 系统重启中
)

// 布控类别
type DispositionCategoryType string

const (
	DispositionCategoryTypePerson          DispositionCategoryType = "1"
	DispositionCategoryTypeFace            DispositionCategoryType = "2"
	DispositionCategoryTypeMotorVehicle    DispositionCategoryType = "3"
	DispositionCategoryTypeNonMotorVehicle DispositionCategoryType = "4"
	DispositionCategoryTypeKeyWord         DispositionCategoryType = "5"
)

// 布控对象名称中属性类型
type PropertyType int

// 订阅类别
type SubscribeDetailType string

// 校时模式
type TimeCorrectModeType string

const (
	TimeCorrectModeTypeNetwork TimeCorrectModeType = "1"
	TimeCorrectModeTypeManual  TimeCorrectModeType = "2"
)

// 视频图像分析处理事件类型
type EventType int

// 水平方向
type HDirectionType string

// 水平方向
type HorizontalShotType string

// 图像类型
type ImageType string

const (
	ImageTypeBigVehicle = "01"
	ImageTypeVehicle    = "09"
	ImageTypeFace       = "11"
	ImageTypeScene      = "14"
)

// 视频设备工作状态:1在线,正常、2离线,停用、9其他
type StatusType string

// 车辆抓拍方向,0：拍车头；1：拍车尾，兼容无视频卡口信息设备
type CapDirectionType int

// 卡口类型
// 10，国际; 20，省际; 30，市际; 31，市区; 40，县际; 41，县区;  99，其他;
type TollgateType string

// 音频标志,0:无音频，1:含音频
type AudioFlagType int

// 图像处理标志,0：未处理，1：图像经过处理
type ImageProcFlagType int

// 是否驾驶员 0：否；1：是；2：不确定
type IsDriverType int

// 是否涉外人员 0：否；1：是；2：不确定
type IsForeignerType int

// 是否涉恐人员; 0：否；1：是；2：不确定
type IsSuspectedTerroristType int

// 是否涉案人员; 0：否；1：是；2：不确定
type IsCriminalInvolvedType int

// 是否涉案人员; 0：否；1：是；2：不确定
type IsDetaineesType int

// 是否被害人; 人工采集时必选0：否；1：是；2：不确定
type IsVictimType int

// 是否可疑人; 人工采集时必选0：否；1：是；2：不确定
type IsSuspiciousPersonType int

// 姿态分布; 1：平视；2：微仰；3：微俯；4：左微侧脸；5：左斜侧脸；6：左全侧脸；7：右微侧脸；8：右斜侧脸；9：右全侧脸
type AttitudeType int

// 贴膜颜色; 0：深色，1：浅色，2：无
type FilmColorType int

// 改装标志; 0：未改装，1：改装
type IsModifiedType int

// 案件状态; 必选; 0:事件，1：已立案，2：已侦破，3：侦破待复核，4：已结案，5：结案待复核，6：并案待复核、7：撤案待复核，8：结案归档，9：并案归档，10：撤案归档
type CaseInfoState int

// 单位为密度等级 ：0：很稀疏1：稀疏2：密集3：很密集
type TargetDensityAbsType int

// 目标的类型：1：人员，2：人脸，3：机动车，4：非机动车，; 5：物品，6：场景
type TargetType int

// 布控操作类型; 0:布控；1：撤控
type DispositionOperateType int

const (
	DispositionOperateTypeTrue  DispositionOperateType = 0
	DispositionOperateTypeFalse DispositionOperateType = 1
)

// 布控执行状态; 0：布控中1：已撤控2：布控到期9：未布控;该字段只读
type DispositionStatus int

const (
	DispositionStatusRunning  DispositionStatus = 0
	DispositionStatusRevoke   DispositionStatus = 1
	DispositionStatusDeadline DispositionStatus = 2
	DispositionStatusNot      DispositionStatus = 9
)

// 订阅操作类型; 0：订阅；1：取消订阅
type SubscribeOperateType int

const (
	SubscribeOperateTypeTrue  SubscribeOperateType = 0
	SubscribeOperateTypeFalse SubscribeOperateType = 1
)

// 遮阳板状态; 可选; 0：收起；1：放下
type SunvisorType int

// 安全带状态; 可选; 0：未系；1：有系
type SafetyBeltType int

// 打电话状态; 可选; 0：未打电话；1：打电话中
type CallingType int

// 报警事件级别：0：提示；1：普通警告；2：严重警告；其余数值保留
type EventLevelType int

// 车道出入城;1 进城、2出城、3非进出城、4 进出城混合
type CityPassType int

// 卡口用途;80治安卡口，81交通卡口，82其他
type TollgateCat2Type int

// 视频处理标志,0：未处理，1：视频经过处理
type VideoProcFlagType int

// 人员对象列表
type PersonList []*Person
type PersonListObject struct {
	PersonObject []*Person
}

// 人脸对象列表
type FaceList []*Face
type FaceListObject struct {
	FaceObject []*Face
}

// 机动车对象列表
type MotorVehicleList []*MotorVehicle
type MotorVehicleObject []*MotorVehicle
type MotorVehicleListObject struct {
	MotorVehicleObject []*MotorVehicle
}

// 非机动车对象列表
type NonMotorVehicleList []*NonMotorVehicle
type NonMotorVehicleListObject struct {
	NonMotorVehicleObject []*NonMotorVehicle
}

// 物品对象列表
type ThingList []*Thing
type ThingListObject struct {
	ThingObject []*Thing
}

// 场景对象列表
type SceneList []*Scene
type SceneListObject struct {
	SceneObject []*Scene
}

type FeatureInfoListObject struct {
	FeatureInfoObject []*FeatureInfo
}

type AlarmSensitivityType int

const (
	AlarmSensitivityTypeHigh   = 1
	AlarmSensitivityTypeMiddle = 2
	AlarmSensitivityTypeLower  = 3
)

var AlarmSensitivityMap = map[int]float64{
	AlarmSensitivityTypeHigh:   0.93,
	AlarmSensitivityTypeMiddle: 0.90,
	AlarmSensitivityTypeLower:  0.85,
}

var AlarmSensitivityTypeMap = map[int]float64{}

type ResultFeatureDeclareType string

const (
	ResultFeatureDeclareTypeNo         = "-1"
	ResultFeatureDeclareTypeBigVehicle = "01"
	ResultFeatureDeclareTypeVehicle    = "09"
	ResultFeatureDeclareTypeFace       = "11"
	ResultFeatureDeclareTypeScene      = "14"
)

type ResultFeatureDeclare int

const (
	ResultFeatureDeclareNo  = -1
	ResultFeatureDeclareYes = 1
)

type TargetFeatureType string

const (
	TargetFeatureTypeName          = "1"
	TargetFeatureTypeIdNo          = "2"
	TargetFeatureTypePlateNo       = "3"
	TargetFeatureTypePlateColor    = "4"
	TargetFeatureTypePlateBrand    = "5"
	TargetFeatureTypePlateModel    = "6"
	TargetFeatureTypePlateYearType = "7"
	TargetFeatureTypePlateKeyword  = "8"
)

type FeatureInfoVendorType string

const (
	FeatureInfoVendorTypeGLST = "GLST" // 格灵深瞳
)

// 视频案件
type CaseList []*Case
type CaseListObject struct {
	CaseObject []*Case
}

// 视频卡口
type TollgateList []*Tollgate
type TollgateListObject struct {
	TollgateObject []*Tollgate
}

// 车道
type LaneList []*Lane
type LaneListObject struct {
	LaneObject []*Lane
}

// 设备
type APEList []*APE
type APEListObject struct {
	APEObject []*APE
}

// 设备状态
type APEStatusList []*APEStatus
type APEStatusListObject struct {
	APEStatusObject []*APEStatus
}

// 采集系统
type APSList []*APS
type APSListObject struct {
	APSObject []*APS
}

// 采集系统状态
type APSStatusList []*APSStatus
type APSStatusListObject struct {
	APSStatusObject []*APSStatus
}

// 标签列表
type DataClassTabList []*DataClassTab
type DataClassTabListObject struct {
	DataClassTabObject []*DataClassTab
}

type SubImageInfoListObject struct {
	SubImageInfoObject []*SubImageInfo
}

// 更新项目
type ExecuteOperationType int

const (
	ExecuteOperationTypeAdd    ExecuteOperationType = 1 // 添加
	ExecuteOperationTypeModify ExecuteOperationType = 2 // 修改
	ExecuteOperationTypeDelete ExecuteOperationType = 3 // 删除
)

type SubscribeResourceClassType int

// 是否需要图片
type ResultImageDeclareType string

type DataType string

const (
	DataTypePerson          DataType = "11"
	DataTypeFace            DataType = "12"
	DataTypeMotorVehicle    DataType = "13"
	DataTypeNonMotorVehicle DataType = "14"
)
